import os
import win32com.client
from traceback import print_exc
from pathlib import Path

def extract_tables_from_docx(file_path):
    # 初始化Word应用程序
    word = win32com.client.Dispatch("Word.Application")
    word.Visible = False  # 隐藏Word界面
    
    try:
        # 打开DOCX文件
        doc = word.Documents.Open(os.path.abspath(file_path))
        all_tables_data = []  # 用于存储所有表格的数据

        doc.SaveAs(os.path.abspath(r'aaaa.html'), FileFormat=8)
        
        # 遍历文档中的每个表格
        for table_index, table in enumerate(doc.Tables, 1):
            table_data = []  # 存储单个表格的数据
            

            # 遍历表格的每一行
            for row_index, row in enumerate(table.Rows, 1):
                row_data = []  # 存储单行的数据
                
                # 遍历行中的每个单元格
                for col_index, cell in enumerate(row.Cells, 1):
                    # 获取并添加单元格的内容到row_data列表中
                    cell_text = cell.Range.Text.strip()  # 移除前导和尾随空白
                    row_data.append(cell_text)
                
                table_data.append(row_data)  # 将一行的数据添加到table_data列表中
            
        print("所有表格数据提取完成。")
        return all_tables_data
    
    except Exception as e:
        print_exc()
        print(f"处理文档时发生错误: {e}")
    
    finally:
        # 关闭Word文档，不保存更改
        if 'doc' in locals():
            doc.Close(SaveChanges=True)
        # 退出Word应用程序
        word.Quit()
    
    return all_tables_data

# 请将下面的文件路径替换为您的DOCX文件的实际路径
# docx_file_path = r"E:\06-开发输入\0-RGX\RGX2021_659_FUEL_燃油功率加浓发动机运行时间阈值设计优化_V1_20211206.docx"
docx_file_path = r"RGX2020_007-OBD故障路径管理优化V04_20200703.docx"
tables_data = extract_tables_from_docx(docx_file_path)

# 打印提取到的表格数据（示例）
for idx, table in enumerate(tables_data, start=1):
    print(f"Table {idx}:")
    for row in table:
        print(row)